pub struct Profile {
env: String, // compile, test, dev, bench, etc.
opt_level: uint,
+ codegen_units: Option<uint>, // None = use rustc default
debug: bool,
test: bool,
doctest: bool,
Profile {
env: String::new(),
opt_level: 0,
+ codegen_units: None,
debug: false,
test: false,
doc: false,
self.opt_level
}
+ pub fn get_codegen_units(&self) -> Option<uint> {
+ self.codegen_units
+ }
+
pub fn get_debug(&self) -> bool {
self.debug
}
self
}
+ pub fn codegen_units(mut self, units: Option<uint>) -> Profile {
+ self.codegen_units = units;
+ self
+ }
+
pub fn debug(mut self, debug: bool) -> Profile {
self.debug = debug;
self
// to the actual hash of a profile.
let Profile {
opt_level,
+ codegen_units,
debug,
plugin,
dest: ref dest,
test: _,
doctest: _,
} = *self;
- (opt_level, debug, plugin, dest, harness).hash(into)
+ (opt_level, codegen_units, debug, plugin, dest, harness).hash(into)
}
}
cmd = cmd.arg("--opt-level").arg(profile.get_opt_level().to_string());
}
+ match profile.get_codegen_units() {
+ Some(n) => cmd = cmd.arg("-C").arg(format!("codegen-units={}", n)),
+ None => {},
+ }
+
if profile.get_debug() {
cmd = cmd.arg("-g");
} else {
#[deriving(Decodable, Clone, Default)]
pub struct TomlProfile {
opt_level: Option<uint>,
+ codegen_units: Option<uint>,
debug: Option<bool>,
}
None => return profile,
};
let opt_level = toml.opt_level.unwrap_or(profile.get_opt_level());
+ let codegen_units = toml.codegen_units;
let debug = toml.debug.unwrap_or(profile.get_debug());
- profile.opt_level(opt_level).debug(debug)
+ profile.opt_level(opt_level).codegen_units(codegen_units).debug(debug)
}
fn target_profiles(target: &TomlTarget, profiles: &TomlProfiles,